package com.learn.core.controller.manager;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.learn.common.annotation.UserLoginToken;
import com.learn.common.enums.ResultEnum;
import com.learn.common.utils.PageResult;
import com.learn.common.utils.StringUtils;
import com.learn.core.domain.LLog;
import com.learn.core.dto.LLogDTO;
import com.learn.core.service.ILLogService;
import com.learn.framework.web.controller.WebController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


/**
 * Description
 *
 * @author zhaohongyu
 * @ClassName LLogController
 * @date 2021.03.16 16:40
 */
@Api("操作日志")
@RestController
@RequestMapping("/manager/log")
public class LLogController extends WebController<LLog> {

    @Autowired
    ILLogService ilLogService;

    //列表
    @ApiOperation(value = "获取列表")
    @UserLoginToken
    @PostMapping("/list")
    public PageResult<LLog> list(@RequestBody LLogDTO LLogDTO){
        try {
            if (LLogDTO==null||LLogDTO.getPage()==null||LLogDTO.getRows()==null){
                return new PageResult<>(null, null, ResultEnum.ERROR);
            }
            PageHelper.startPage(LLogDTO.getPage(),LLogDTO.getRows());
            QueryWrapper<LLog> queryWrapper = new QueryWrapper<>();
            if(StringUtils.isNotEmpty(LLogDTO.getOperationType()))
                queryWrapper.eq("operation_type",LLogDTO.getOperationType());
            if(StringUtils.isNotEmpty(LLogDTO.getLogType()))
                queryWrapper.eq("log_type",LLogDTO.getLogType());
            if(StringUtils.isNotEmpty(LLogDTO.getBusinessModule()))
                queryWrapper.eq("business_module",LLogDTO.getBusinessModule());
            if(StringUtils.isNotEmpty(LLogDTO.getCreateUser()))
                queryWrapper.like("create_user",LLogDTO.getCreateUser());
            if(StringUtils.isNotEmpty(LLogDTO.getStartTime()))
                queryWrapper.ge("create_time",LLogDTO.getStartTime());
            if(StringUtils.isNotEmpty(LLogDTO.getEndTime()))
                queryWrapper.le("create_time",LLogDTO.getEndTime());
            Page<LLog> lLogs = (Page<LLog>)ilLogService.list(queryWrapper);

            if (CollectionUtils.isEmpty(lLogs)) {
                return new PageResult<>(null, null, ResultEnum.NOT_EEIST);
            }
            // 返回
            return new PageResult(lLogs.getTotal(), lLogs, ResultEnum.SUCCESS);
        }catch (Exception e){
            e.printStackTrace();
            return new PageResult(null,null,ResultEnum.ERROR);
        }
    }

//    //更新
//    @ApiOperation(value = "更新")
//    @PostMapping("/edit")
//    @UserLoginToken
//    @Log(title = "更新操作日", businessType = BusinessType.SELECT, operatorType = OperatorType.SYSTEM)
//    public CommonResult<Object> edit(@RequestBody LLog lLog) {
//        if(lLog!=null){
//            if(ilLogService.updateById(lLog)){
//                return (CommonResult) ResultUtil.success(ResultEnum.SUCCESS);
//            }
//        }
//        return (CommonResult)ResultUtil.error(ResultEnum.ERROR);
//    }
//
//    //新增
//    @ApiOperation(value = "添加")
//    @PostMapping("/add")
//    @UserLoginToken
//    public CommonResult<Object> add(@RequestBody LLog lLog){
//        try {
//            if(lLog!=null) {
//                lLog.setCreateTime(new Date());
//                if (ilLogService.save(lLog)) {
//                    return (CommonResult) ResultUtil.success(ResultEnum.SUCCESS);
//                }
//            }
//        }catch (Exception e){
//            return (CommonResult)ResultUtil.error(ResultEnum.ERROR);
//        }
//        return  (CommonResult)ResultUtil.error(ResultEnum.ERROR);
//    }
//
//
//    //删除
//    @ApiOperation(value = "删除")
//    @PostMapping("/del")
//    @UserLoginToken
//    public CommonResult<Object> del(@RequestBody LLog lLog){
//        try {
//            if(lLog!=null){
//                if(lLog.getLogId()!=null){
//                    QueryWrapper<LLog> queryWrapper = new QueryWrapper<LLog>();
//                    queryWrapper.in(true, "log_id", lLog.getLogId());
//                    if(ilLogService.remove(queryWrapper)){
//                        return (CommonResult)ResultUtil.success(ResultEnum.SUCCESS);
//                    }
//                }
//            }
//        }catch (Exception e)
//        {
//            return (CommonResult)ResultUtil.error(ResultEnum.ERROR);
//        }
//        return (CommonResult)ResultUtil.error(ResultEnum.ERROR);
//    }
}
